#ifndef _CANARY_UTIL_EXCEPT_H_
#define _CANARY_UTIL_EXCEPT_H_

#include <stdexcept>
#include <vector>
#include <string>
#include <string_view>
#include <cassert>

namespace wilson::util
{
    class programmer_exception : public ::std::exception
    {
    public:
        virtual const char* what() const noexcept override;
    };

    class not_implement_exception : public programmer_exception
    {
    public: 
        not_implement_exception() = default;
        not_implement_exception(::std::string_view msg)
            : nie_msg{ msg }
        {
        }

        virtual const char* what() const noexcept override;
        
    private:
        ::std::string_view nie_msg;
    };
}

#endif
